/*
 * Copyright (C) 2025 Huawei Device Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef TEST_PICTURE_TYPE_H
#define TEST_PICTURE_TYPE_H

#include <iostream>
#include <set>

using namespace  std;

const static std::set<std::string> READ_WRITE_KEYS = {
    "BitsPerSample",
    "Orientation",
    "ImageLength",
    "ImageWidth",
    "GPSLatitude",
    "GPSLongitude",
    "GPSLatitudeRef",
    "GPSLongitudeRef",
    "DateTimeOriginal",
    "ExposureTime",
    "SceneType",
    "ISOSpeedRatings",
    "FNumber",
    "DateTime",
    "GPSTimeStamp",
    "GPSDateStamp",
    "ImageDescription",
    "Make",
    "Model",
    "PhotoMode",
    "SensitivityType",
    "StandardOutputSensitivity",
    "RecommendedExposureIndex",
    "ISOSpeed",
    "ApertureValue",
    "ExposureBiasValue",
    "MeteringMode",
    "LightSource",
    "Flash",
    "FocalLength",
    "UserComment",
    "PixelXDimension",
    "PixelYDimension",
    "WhiteBalance",
    "FocalLengthIn35mmFilm",
    "CompressedBitsPerPixel",
    "JPEGProc",
    "Compression",
    "PhotometricInterpretation",
    "StripOffsets",
    "SamplesPerPixel",
    "RowsPerStrip",
    "StripByteCounts",
    "XResolution",
    "YResolution",
    "PlanarConfiguration",
    "ResolutionUnit",
    "TransferFunction",
    "Software",
    "Artist",
    "WhitePoint",
    "PrimaryChromaticities",
    "YCbCrCoefficients",
    "YCbCrSubSampling",
    "YCbCrPositioning",
    "ReferenceBlackWhite",
    "Copyright",
    "SubsecTime",
    "SubsecTimeOriginal",
    "SubsecTimeDigitized",
    "FlashpixVersion",
    "ColorSpace",
    "RelatedSoundFile",
    "FlashEnergy",
    "SpatialFrequencyResponse",
    "FocalPlaneXResolution",
    "FocalPlaneYResolution",
    "FocalPlaneResolutionUnit",
    "SubjectLocation",
    "ExposureIndex",
    "SensingMethod",
    "FileSource",
    "CFAPattern",
    "CustomRendered",
    "ExposureMode",
    "DigitalZoomRatio",
    "SceneCaptureType",
    "GainControl",
    "Contrast",
    "Saturation",
    "Sharpness",
    "DeviceSettingDescription",
    "SubjectDistanceRange",
    "ImageUniqueID",
    "GPSVersionID",
    "GPSAltitudeRef",
    "GPSAltitude",
    "GPSSatellites",
    "GPSStatus",
    "GPSMeasureMode",
    "GPSDOP",
    "GPSSpeedRef",
    "GPSSpeed",
    "GPSTrackRef",
    "GPSTrack",
    "GPSImgDirectionRef",
    "GPSImgDirection",
    "GPSMapDatum",
    "GPSDestLatitudeRef",
    "GPSDestLatitude",
    "GPSDestLongitudeRef",
    "GPSDestLongitude",
    "GPSDestBearingRef",
    "GPSDestBearing",
    "GPSDestDistanceRef",
    "GPSDestDistance",
    "GPSProcessingMethod",
    "GPSAreaInformation",
    "GPSDifferential",
    "ComponentsConfiguration",
    "ISOSpeedLatitudeyyy",
    "ISOSpeedLatitudezzz",
    "SubjectDistance",
    "DefaultCropSize",
    "LensSpecification",
    "SubjectArea",
    "DNGVersion",
    "SubfileType",
    "NewSubfileType",
    "LensMake",
    "LensModel",
    "LensSerialNumber",
    "OffsetTimeDigitized",
    "OffsetTimeOriginal",
    "SourceExposureTimesOfCompositeImage",
    "SourceImageNumberOfCompositeImage",
    "GPSHPositioningError",
    "Orientation",
    "GPSLongitudeRef",
    "ExposureProgram",
    "SpectralSensitivity",
    "OECF",
    "ExifVersion",
    "DateTimeDigitized",
    "ShutterSpeedValue",
    "BrightnessValue",
    "MaxApertureValue",
    "BodySerialNumber",
    "CameraOwnerName",
    "CompositeImage",
    "Gamma",
    "OffsetTime",
    "PhotographicSensitivity",
    "HwMnoteCaptureMode",
    "MovingPhotoId",
    "MovingPhotoVersion",
    "MicroVideoPresentationTimestampUS",
};


const static std::set<std::string> READ_ONLY_KEYS = {
    "HwMnotePhysicalAperture",
    "HwMnoteRollAngle",
    "HwMnotePitchAngle",
    "HwMnoteSceneFoodConf",
    "HwMnoteSceneStageConf",
    "HwMnoteSceneBlueSkyConf",
    "HwMnoteSceneGreenPlantConf",
    "HwMnoteSceneBeachConf",
    "HwMnoteSceneSnowConf",
    "HwMnoteSceneSunsetConf",
    "HwMnoteSceneFlowersConf",
    "HwMnoteSceneNightConf",
    "HwMnoteSceneTextConf",
    "HwMnoteFaceCount",
    "HwMnoteFocusMode",
    "HwMnoteFrontCamera",
    "HwMnoteSceneVersion",
    "HwMnoteScenePointer",
    "HwMnoteFacePointer",
    "HwMnoteBurstNumber",
    "HwMnoteFaceVersion",
    "HwMnoteFaceConf",
    "HwMnoteFaceSmileScore",
    "HwMnoteFaceRect",
    "HwMnoteFaceLeyeCenter",
    "HwMnoteFaceReyeCenter",
    "HwMnoteFaceMouthCenter",
    "JPEGInterchangeFormat",
    "JPEGInterchangeFormatLength",
    "MakerNote",
};


#endif //TEST_PICTURE_TYPE_H
